package com.dodoke.service;

import java.util.List;

import com.dodoke.domain.WxGoods;
import com.dodoke.domain.WxGoodsAttr;
import com.dodoke.domain.vo.WxGoodsVo;

/**
 * 【商品】Service接口
 *
 * @author dodoke
 * @date 2020-08-25
 */
public interface IWxGoodsService
{

    /**
     * 通过商品name查询【商品】
     *
     * @param name 【商品】NAME
     * @return 【商品信息】
     */
//    public WxGoods selectWxGoodsByName(String name);

    /**
     * 通过商品id查询【商品】
     *
     * @param id 【商品】ID
     * @return 【商品信息】
     */
    public WxGoods selectWxGoodsById(Long id);

    /**
     * 通过商品name查询【商品】
     *
     * @param name 【商品】NAME
     * @return 【商品信息】
     */
    public WxGoods selectWxGoodsByName(String name);

    /***
     * 通过商品id查询【商品】
     * 和上面有所区分，这是给后端人员返回的数据，多带了‘成本’、‘概率’两项数据
     * @param id
     * @return
     */
    WxGoods selectWxGoodsById4Vue(Long id);


    /***
     * 查询在这个集合内的元素
     * @param list
     * @return
     */
    public List<WxGoodsVo>  selectWxGoodsByRowNums(List<Integer> list);


    /***
     * 查看商品有无库存
     * @param id 商品id
     * @return 查询结果，是否为0
     */
    int selectGoodsCount(Long id);

    /***
     * 新增商品
     * @param wxGoods 商品对应的实体类
     * @return 影响行数对应的AjaxResult
     */
    int addGoods(WxGoods wxGoods);

    /***
     * 获取所有的商品,需要联查wx_image获取商品对应的image
     * 还需要联查wx_goods_attr获取商品对应的参数
     * @return
     */
    List<WxGoods>  findAllGoods(WxGoods wxGoods);


    /***
     * 更新商品
     * @param wxGoods 商品类
     * @return 影响行数
     */
    int updateWxGoods(WxGoods wxGoods);

    /***
     * 删除商品
     * @param id 商品id
     * @return
     */
    int deleteWxGoodsById(Long id);

    /**
     * 查询商品列表
     * @param wxGoods
     * @return
     */
    List<WxGoods> selectWxGoodsList(WxGoods wxGoods);

    /***
     * 查找不在该小程序码对应的商品池的那些商品，给后台页面使用
     * @param id
     * @return
     */
    List<WxGoodsVo> findAllGoodsNotInQr(Long id);

    /***
     * 查找该小程序码对应的商品池的那些商品，给后台页面使用
     * @param id
     * @return
     */
    List<WxGoodsVo> findAllGoodsInQr(Long id);
}
